package org.dragonnova.lamp;

/**
 * * 指令格式：
 * ****************************** *
 * **   HEADER 2 bytes         ** *
 * **   REMOTE 1 bytes         ** *
 * **   LOCAL  1 bytes         ** *
 * **   LENGTH 2 bytes         ** *
 * **   ACTION 2 bytes         ** *
 * **   DEVICE 1 bytes         ** *
 * **   DATA   ? bytes         ** *
 * **   CS     2 bytes         ** *
 * ****************************** *
 */

/**
 * Created by hucn on 2016/10/25.
 * Description: 控制灯的协议定义
 */
public interface ProtocolDefined {

    // 包头长度
    int LENGTH_HEADER = 2;

    // 目标ID地址与通讯类型
    int LENGTH_REMOTE = 1;

    // 源ID地址与通讯类型
    int LENGTH_LOCAL = 1;

    // 数据长度的标示
    int LENGTH_DATA_SIZE = 2;

    // 数据长度
    int LENGTH_DATA_SWITCH = 2;

    // 命令长度
    int LENGTH_ACTION = 1;

    // 设备类型
    int LENGTH_DEVICE = 1;

    // 校验位长度
    int LENGTH_CHECKSUM = 2;

    // 消息的固定格式
    byte[] HEADER = new byte[]{(byte) 0xFA, (byte) 0x0A};

    // 默认手机的ID
    byte LOCAL_ID = 0x00;

    // 默认设备ID, 发现设备时使用
    byte DEVICE_ID = 0x0F;

    // 通信的类型
    byte TYPE_COMMUNICATION_MASTER = 0x00;
    byte TYPE_COMMUNICATION_WIFI = 0x01;
    byte TYPE_COMMUNICATION_485 = 0x02;
    byte TYPE_COMMUNICATION_433 = 0x03;
    byte TYPE_COMMUNICATION_ZIGBEE = 0x04;
    byte TYPE_COMMUNICATION_INFRARED = 0x05;

    byte TYPE_COMMUNICATION_EXIST = 0x0F;

    // 命令类型
    byte ACTION_QUERY_DEVICE_EXIST = (byte) 0x06;
    byte ACTION_QUERY_DEVICE_STATUS = (byte) 0x02;
    byte ACTION_CONTROL_DEVICE = (byte) 0x03;

    // 应答类型
    byte ACTION_DEVICE_REQUEST_INSTORE = (byte) 0x01;
    byte ACTION_DEVICE_RESPONSE = (byte) 0x04;

    // 设备类型
    byte TYPE_DEVICE_SWITCH = (byte) 0x01;
    byte TYPE_DEVICE_GLASS = (byte) 0x02;
    byte TYPE_DEVICE_TAP = (byte) 0x03;

    // 如果错误
    byte ERROR_NONE = (byte) 0xA1;
    byte ERROR_HEADER = (byte) 0xA2;
    byte ERROR_REMOTE = (byte) 0xA3;
    byte ERROR_LOCAL = (byte) 0xA4;
    byte ERROR_LENGTH = (byte) 0xA5;
    byte ERROR_ACTION = (byte) 0xA6;
    byte ERROR_DEVICE = (byte) 0xA7;
    byte ERROR_DATA = (byte) 0xA8;
    byte ERROR_CHECKSUM = (byte) 0xA9;
}
